home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Toolbox / Visual Basic Toolbox (P.I.E.)(1996).ISO / hlp_auth / gethel / gethelp.bas next >
BASIC Source File  |  1993-09-21  |  6KB  |  250 lines

  1. '**********************************************************************
  2. '*
  3. '*   NAME
  4. '*      GetHelp.bas
  5. '*
  6. '*   DESCRIPTION
  7. '*      Combs through all the forms in the directory and produces a
  8. '*      file that has all the context sensitive help fields listed
  9. '*      (for easy reference).
  10. '*      This assumes one project per directory, of course.
  11. '*
  12. '*   INPUT
  13. '*      All the *.frm files in the current directory.
  14. '*
  15. '*   OUTPUT
  16. '*      HelpID.Txt - A list of all form controls with a help id.
  17. '*      HelpID.H   - The help id's in a format suitable for #including
  18. '*                   in the help project file.
  19. '*
  20. '*   HISTORY
  21. '*      08-02-93 JL Created.
  22. '*
  23. '*      Copyright (c) 1993 Graceland Research.  All Rights Reserved.
  24. '**********************************************************************
  25.  
  26. DEFINT A-Z
  27.  
  28. DECLARE FUNCTION FCount(Spec$)
  29. DECLARE FUNCTION FUsing$ (work$, image$)
  30. DECLARE FUNCTION NULL (work$)
  31.  
  32. CONST TRUE  = -1
  33. CONST FALSE = 0
  34.  
  35. ' read the files on the disk
  36.  
  37. spec$ = "*.FRM"
  38.  
  39. ' find out how many files there are
  40.  
  41. count = FCount(Spec$)
  42.  
  43. DIM ARRAY$(0 TO Count)
  44.  
  45. ' pad the array with spaces
  46.  
  47. FOR idx = 1 TO count
  48.  
  49.     array$(idx) = space$(12)
  50.  
  51. NEXT idx
  52.  
  53. ' get the list of file names
  54.  
  55. array$(0) = Spec$
  56.  
  57. CALL ReadFile(BYVAL VARPTR(Array$(0)))
  58.  
  59. ' alphabetize them
  60.  
  61. IF count > 1 THEN
  62.  
  63.     DO
  64.  
  65.         sw = 0
  66.  
  67.         FOR idx = 1 TO count - 1
  68.  
  69.             IF array$(idx) > array$(idx + 1) THEN
  70.                 SWAP array$(idx), array$(idx + 1)
  71.  
  72.                 sw = 1
  73.  
  74.             END IF
  75.  
  76.         NEXT idx
  77.  
  78.     LOOP UNTIL sw = 0
  79.  
  80. END IF
  81.  
  82. CLS
  83.  
  84. numlines& = 0
  85. lastid = 0
  86.  
  87. OPEN "O", 2, "helpid.txt"
  88. OPEN "O", 3, "helpid.h"
  89.  
  90. FOR idx = 1 TO count
  91.  
  92.     locate 1,1,0: print "Processing File " + Array$(idx)
  93.  
  94.     indent = 0
  95.     formtype = 0
  96.     addblank = FALSE
  97.     formname$ = "(Unknown)!"
  98.     controltype$ = ""
  99.     controlname$ = ""
  100.     helpid = 0
  101.  
  102.     OPEN "I", 1, Array$(idx)
  103.  
  104.     LINE INPUT #1, a$
  105.  
  106.     ' make sure we can id the file
  107.     IF LEFT$(a$, 7) <> "VERSION" THEN
  108.         print #2, array$(idx) + " is not saved as text"
  109.         print #2, ""
  110.     ELSE
  111.         numlines& = numlines& + 1
  112.  
  113.         ' parse the form information
  114.         DO UNTIL EOF(1)
  115.  
  116.             LINE INPUT #1, a$
  117.  
  118.             numlines& = numlines& + 1
  119.  
  120.             IF LTRIM$(RTRIM$(a$)) = "End" THEN
  121.                 indent = indent - 1
  122.  
  123.                 ' if the form information is over, then exit
  124.                 IF indent <= 0 THEN
  125.                     EXIT DO
  126.                 END IF
  127.             END IF
  128.  
  129.             formtype = 0
  130.  
  131.             x = INSTR(a$, "Begin")
  132.  
  133.             IF x THEN
  134.                 ' bump our indent counter
  135.                 indent = indent + 1
  136.  
  137.                 ' "Begin" is 5 characters wide, so start right after it
  138.                 start = x + 6
  139.  
  140.                 ' look for the form name, control name, whatever
  141.                 x = INSTR(start, a$, " ")
  142.  
  143.                 IF x THEN
  144.                     controltype$ = MID$(a$, start, x - start)
  145.                     controlname$ = RTRIM$(MID$(a$, x + 1))
  146.  
  147.                     IF controltype$ = "MDIForm" THEN
  148.                         formtype = 2
  149.                     ELSEIF controltype$ = "Form" THEN
  150.                         formtype = 1
  151.                     END IF
  152.  
  153.                     ' this is a new form, so put it's name in the file list
  154.                     IF formtype THEN
  155.                         formname$ = controlname$
  156.                         controlname$ = ""
  157.                         print #2, "File: " + LCASE$(array$(idx)) + "    Form: " + formname$
  158.                     END IF
  159.                 END IF
  160.             END IF
  161.  
  162.             ' look for the controls with a help context id
  163.             x = INSTR(a$, "HelpContextID")
  164.  
  165.             IF x THEN
  166.  
  167.                 ' find out what the id is
  168.                 start = x + 1
  169.  
  170.                 x = INSTR(start, a$, "=")
  171.  
  172.                 IF x THEN
  173.                     helpid = VAL(LTRIM$(RTRIM$(MID$(a$, x + 2))))
  174.                 ELSE
  175.                     helpid = 0
  176.                 END IF
  177.  
  178.                 ' keep track of what the greatest helpid used in the file is
  179.                 IF helpid > lastid THEN
  180.                     lastid = helpid
  181.                 END IF
  182.  
  183.                 ' pad the name so things line up better
  184.                 IF LEN(controltype$) < 8 THEN
  185.                     pad$ = SPACE$(8 - LEN(controltype$))
  186.                 ELSE
  187.                     pad$ = ""
  188.                 END IF
  189.  
  190.                 ' generate the name part of the line
  191.                 helpline$ = "    (" + controltype$ + ") " + pad$ + controlname$
  192.  
  193.                 IF LEN(helpline$) < 33 THEN
  194.                     helpline$ = helpline$ + SPACE$(33 - LEN(helpline$))
  195.                 END IF
  196.  
  197.                 print #2, helpline$ + "=" + FUSING$(STR$(helpid), "####")
  198.  
  199.                 ' generate the #include for the helpid.h file
  200.                 IF NULL(controlname$) THEN
  201.                     define$ = "id_" + formname$
  202.                 ELSE
  203.                     define$ = "id_" + formname$ + "_" + controlname$
  204.                 END IF
  205.  
  206.                 IF LEN(define$) < 29 THEN
  207.                     define$ = define$ + SPACE$(29 - LEN(define$))
  208.                 END IF
  209.  
  210.                 print #3, "#define " + define$ + FUSING$(STR$(helpid), "####")
  211.  
  212.                 addblank = TRUE
  213.  
  214.             END IF
  215.  
  216.             ' a keystroke will abort the process
  217.             IF len(inkey$) THEN
  218.                 CLOSE
  219.                 END
  220.             END IF
  221.  
  222.         LOOP
  223.  
  224.         IF addblank THEN
  225.             print #2, ""
  226.         END IF
  227.     END IF
  228.  
  229.     CLOSE #1
  230.  
  231. NEXT idx
  232.  
  233. ' put the last id used at the end of the file
  234. print #2, STRING$(38, "-")
  235. print #2, "Last ID is" + STR$(lastid)
  236. print #2, STRING$(38, "-")
  237. print #2, ""
  238.  
  239. CLOSE
  240.  
  241. ' print out summary information to the screen
  242. print
  243. print "Processed" + STR$(numlines&)+" lines in" + STR$(count) + " files."
  244. print "HelpID.Txt, HelpID.H written. Last ID used was" + STR$(lastid)
  245. print
  246.  
  247. END
  248.  
  249.  
  250.